package com.cykj.pos.service;

import com.cykj.pos.domain.BizMerchOrder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cykj.pos.domain.BizMerchant;
import com.cykj.pos.domain.BizPosType;
import com.cykj.pos.domain.BizTimeoutIntegral;
import com.cykj.pos.domain.dto.OrderDTO;
import com.cykj.pos.profit.dto.BizMerchOrderDTO;
import com.cykj.pos.profit.dto.MessageDTO;

import java.util.List;

/**
 * 订单Service接口
 *
 * @author weijianbo
 * @date 2021-02-24
 */
public interface IBizMerchOrderService extends IService<BizMerchOrder> {

    /**
     * 查询列表
     */
    List<BizMerchOrder> queryList(BizMerchOrder bizMerchOrder);

    /**
     * 提交订单
     * @param orderDTO
     * @return
     */
    BizMerchOrder submitOrder(OrderDTO orderDTO);

    /**
     * 根据商户查询订单列表
     * @param orderDTO
     * @return
     */
    List<BizMerchOrder> getOrderListByMerchId(OrderDTO orderDTO);

    /**
     * 根据申请商户查询订单列表
     * @param orderDTO
     * @return
     */
    List<BizMerchOrder> getOrderListByParentId(OrderDTO orderDTO);

    /**
     * 根据订单id查询订单
     * @param orderDTO
     * @return
     */
    BizMerchOrder getOrdertById(OrderDTO orderDTO);
    /**
     * 根据伙伴id查询订单
     * @param orderDTO
     * @return
     */
    BizMerchOrder getOrdertByParentId(OrderDTO orderDTO);

    /**
     * 根据消息id查询订单信息
     * @param messageDTO
     * @return
     */
    BizMerchOrder getMsgMerchOrderByMsgId(MessageDTO messageDTO);

    /**
     * 更改订单表的订单状态
     * @param bizTimeoutIntegral
     */
    void updateOrderByOrderNo(BizTimeoutIntegral bizTimeoutIntegral);

    /**
     * 超时 返还积分
     * @param bizTimeoutIntegral
     */
    void integralReturn(BizTimeoutIntegral bizTimeoutIntegral);

    /**
     * 通过orderId查询临时积分表
     * @param orderId
     * @return
     */
    BizTimeoutIntegral queryOrderByOrderId(Long orderId);

    /**
     * 将临时积分打给 发放机具的人
     * @param bizTimeoutIntegral
     */
    void saveTemporaryIntegral(BizTimeoutIntegral bizTimeoutIntegral);

    /**
     * 修改 我的的订单列表加上 POS机类型
     * @param orderDTO
     * @return
     */
    List<BizMerchOrderDTO> getOrderListByMerchIdAddType(OrderDTO orderDTO);

    /**
     * 根据 申请用户查找订单
     * @param orderDTO
     * @return
     */
    List<BizMerchOrderDTO> getOrderListByParentIdAddType(OrderDTO orderDTO);

    /**
     * 根据订单id查询订单 加上pos机类型
     * @param orderDTO
     * @return
     */
    BizMerchOrderDTO getOrdertByIdAddType(OrderDTO orderDTO);

    /**
     * 根据伙伴id查询订单 加上pos机类型
     * @param orderDTO
     * @return
     */
    BizMerchOrderDTO getOrdertByParentIdAddType(OrderDTO orderDTO);
}
